Prvi program
Uobičajeno je da početnici prvo napišu program koji se zove "Hello World" (Zdravo svete), čiji je jedini zadatak da odštampa reči "Hello World" na ekran računara, pa ćemo kreirati upravo taj program. Pre nego što se pristupi programiranju, potrebno je da se definište kako konačno treba da izgleda program, a zatim i da se napravi plan koje koji precizira sve korake koje program treba da uradi da bi se postigao željeni rezultat. Ovaj postupak se zove razrada algoritma. U slučaju ovog jednostavnog programa, potreban je samo jedan korak: štampanje poruke na ekranu. Ovaj korak smo opisali rečenicom prirodnog jezika, ali postoji i grafički prikaz razrade algoritma koji se zove dijagram toka. Svi programi koje ćeš videti u narednim lekcijama će imati mnogo više koraka od ovog prvog primera i mnogi će biti i ilustrovani dijagramima toka.
Konzolna aplikacija - Visual Studio
Visual Studio može da se koristi za pravljenje različitih tipova aplikacija. U ovom priručniku mi ćemo kompajlirati i pokretati konzolne aplikacije. Konzolne aplikacije su programi koji imaju samo tekstualnu interakciju sa korisnikom, dakle samo uz upotrebu tastature i ekrana. Ovo se razlikuje od GUI (eng. Graphical User Interface - grafički korisnički interfejs) aplikacija koje podržavaju upotrebu miša ili nekog drugog uređaja za prikazivanje.
Da bi se prevela (kompajlirala) i izvršila jednostavna konzolna aplikacija u okruženju Visual Studio uradi sledeće:
File -> New Project...
Kada se otvori novi prozor na njegovoj levoj strani Templates -> Visual C++. Zatim u centralnom delu izaberi opciju Win32 Console Application:
Na dnu prozora postoji opcija za davanje imena projektu kao i za izbor lokacije na disku gde će biti smešteni svi fajlovi projekta. Podrazumevane opcije će poslužiti svrsi, ali one mogu i da se promene i prilagode.
Sada klikni dugme [OK]
Ovo će otvoriti novi prozor pod imenom Win32 Application Wizard, kao na sledećoj slici.
Klikni dugme [Next].
Ostavi Console application selektovano, a u Additional options označi Empty project. Ostale opcije nas ne zanimaju ali i ne smetaju. Sada imamo prazan projekat pa bilo lepo da dodamo i neki C++ fajl u njega. Da bismo to uradili u okviru dela Solution Explorer (koji se nalazi sa desne strane na sledećoj slici), potražite gde piše Source Files u okviru vaše aplikacije i uradite sledeće: Right-click -> Add -> New Item...
Sada dodaj novi C++ fajl, kao što je prikazano na sledećoj slici.
Možeš dati bilo koje ime fajlu sa .cpp ekstenzijom, kao na primer mojProgram.cpp. Nakon klika na dugme [Add], glavni prozor će prikazati editor u kome možeš početi da pišeš svoj prvi C++ program. Napiši sledeće u editor:
// moj prvi C++ program #include <iostream> int main() { std::cout << " Hello World!"; }
Da bi kompajlirao i pokrenuo ovu aplikaciju, jednostavno na tastaturi pritisni Ctrl+F5. Možeš dalje da menjaš ovaj fajl koliko god želiš i koliko god ima potrebe. Okruženje je na početku podešeno da svaki put kada pokreneš izvršavanje programa, automatski sačuva (snimi) promene i kompajlira najnoviju verziju programa.
Konzolna aplikacija - Code::Blocks
Code::Blocks može da se koristi za pravljenje različitih tipova aplikacija. Da bi se prevela (kompajlirala) i izvršila jednostavna konzolna aplikacija u okruženju Code::Blocks uradi sledeće: File -> New Project...
Kada se otvori novi prozor sa naslovom New from template u centralnom delu, potrebno je izabrati opciju Console application i kliknuti na dugme [Go]:
Kada se pojavi pozdravni ekran Console application, klikni [Next].
Sledeći prozor zahteva od nas da napravimo izbor programskog jezika u kom ćemo pisati program. Možemo izabrati programski jezik C ili programski jezik C++. Izaberimo C++, pošto je naš projekat "Hello World" pisan u programskom jeziku C++. Klikni [Next].
Otvoriće se novi prozor pod imenom Console application. U centralnom delu prozora postoji polje za davanje imena projektu - Project title, kao i za izbor lokacije na disku gde će biti smešteni svi fajlovi projekta - Folder to create project in:. Podrazumevane opcije će poslužiti svrsi, no možete i da ih promenite i prilagodite sve svojim potrebama. U naredna dva polja automatski će se ispisati naziv projektne datoteke i apsolutna putanja do projektne datoteke.
Potom klikni [Next]
Ovo će otvoriti novi prozor u kom se zahteva da izaberemo neki od kompajlera sa spiska. Mi ćemo odabrati GNU GCC compiler. Ovo će zapravo biti podrazumevano izabrana opcija s obzirom da smo instalirali verziju Code::Blocks sa MinGW (GCC/G++ kompajler i GDB dibager).
Nakon klika na [Finish] dugme, glavni prozor će prikazati editor u kome možeš početi da pišeš svoj prvi C++ program.
Napiši sledeće naredbe u editor:
// moj prvi C++ Hello World! #include <iostream> int main() { std::cout << "Hello World!"; }
Da bi kompajlirali i pokrenuli ovu aplikaciju, dovoljno je da se na tastaturi pritisne F9. Možeš dalje menjati ovaj fajl koliko god želiš i koliko god ima potrebe. Okruženje je na početku podešeno da svaki put kada pokreneš izvršavanje programa, automatski sačuva (snimi) promene i kompajlira najnoviju verziju programa.
Struktura tvog prvog programa
Osvrnućemo se na strukturu upravo kreiranog programa koji štampa "Hello World" na ekran računara. Ovaj program smo već napisali u editoru. Iako je ovaj program jednostavan, sadrži sve bitne komponente C++ programa.
Analiziraćemo ovaj program po linijama.
// moj prvi C++ program
Ova linija predstavlja komentar. Programeri koriste komentare da ostave kratka objašnjenja ili zapažanja koja se tiču programa. Kako kompajleri obično ignorišu komentare, oni ni na koji način ne utiču na rezultat izvršavanja koda. Programi rade potpuno isto i sa i bez komentara, samo su bez njih manje razumljivi ljudima koji čitaju kod. Početak komentara se obeležava sa "//". Komentar se završava krajem reda.
#include <iostream>
Linija #include iostream znači "uključi ulazno-izlazni tok" (iostream je skraćeno od input-output stream). Ovde tražimo da se našem programu doda deo koji mu (između ostalog) omogućava da ispiše tekst na ekranu ili da primi ono što je otkucano na tastaturi. Bez ove linije, program za prevođenje ne bi razumeo ostatak našeg programa, konkretno, liniju gde pominjemo "Hello world!".
int main()
Ova linija predstavlja deklaraciju funkcije. Funkcija predstavlja grupu programskih naredbi kojima se daje ime, u ovom slučaju ime funkcije je "main". O funkcijama ćemo detaljno pisati u jednoj od kasnijih lekcija, za sada je bitno da znaš da definicija funkcije počinje sa tipom podataka koji funkcija vraća (int), imenom (main) i parom zagrada "()", opciono i sa ulaznim parametrima. Funkcija pod nazivom main (glavna) je specijalna funkcija u svim C++ programima, to je funkicja koja se poziva kada se pokrene program. Izvršavanje svih C++ programa počinje sa main funkcijom, bez obzira gde se ta funkcija u kodu nalazi (na početku, u sredini ili na kraju).
{
Otvorena vitičasta zagrada "{" označava početak definicije funkcije main, a zatvorena vitičasta zagrada "}" u poslednjoj liniji predstavlja njen kraj. Sve između ovih zagrada je telo funkcije koje definiše šta se dešava kada se funkcija main pozove. Sve funkcije koriste vitičaste zagrade da označe početak i kraj svojih definicija.
std::cout << "Hello World!";
Ova linija predstavlja jednu C++ komandu. Komanda je izraz koji može proizvesti neki efekat. Program se kreira navođenjem komandi koje definišu njegovo pravo ponašanje. Komande se izvršavaju u istom redosledu u kome su napisane u okviru tela funkcije. Ova komanda ima tri dela: prvi, cout, koji označava standardni izlaz (standard character output - standardni tekstualni izlaz, tj. izlaz konzole, i obično je to ekran računara). Drugi, operator ubacivanja "<<", koji označava da će ono što sledi biti ubačeno na izlaz konzole. Na kraju, rečenica u okviru navodnika ("Hello world!"), predstavlja sadržaj koji će biti ubačen/ispisan na standardni izlaz. Primeti da se komanda završava znakom ";". Ovaj karakter označava kraj naredbe, kao što tačka označava kraj rečenice u srpskom jeziku. Sve naredbe u programskom jeziku C++ moraju se završiti sa ";". Jedna od najčešćih sintaksnih grešaka u C++ javlja se kada se zaboravi da izraz mora da se završi sa ";".
Možeš da primetiš da ne utiču sve linije ovog programskog koda na samo izvršenje programa. Program je napisan u različitim linijama između kojih neretko postoje i potpuno prazne linije, a komande su pravilno uvučene (eng. indent) da bi ljudi mogli lakše da razumeju kod čitajući ga. Obrati pažnju da jezik C++ nema striktna pravila za uvlačenje i podelu naredbi u različite linije. Na primer, umesto:
int main () { std::cout << " Hello World!"; }
mogli smo da napišemo sve u jednoj liniji, i program bi imao isto značenje kao i u prethodnom zapisu:
int main () { std::cout << " Hello World!"; }
U C++ odvajanje naredbi se vrši uz pomoć ";", a razdvajanje u različite linije se ne koristi u ovu svrhu. Više naredbi se može napisati u okviru samo jedne linije, ili se svaka naredba može pisati u novoj liniji. Razdvajanje koda po različitim linijama služi da omogući lakše čitanje koda ljudima, i nema nikakvog uticaja na samo ponašanje programa. Sada, hajde da dodamo još jednu komandu našem prvom programu:
// moj drugi C++ program #include <iostream> int main () { std::cout << " Hello World!"; std::cout << "I'm a C++ program"; }
U ovom slučaju, program izvršava dva ispisa na ekran u dve različite naredbe. Još jednom, odvajanje koda u odvojene linije povećava čitljivost/preglednost programa, jer bi funkcija main bila ispravna i da smo je napisali na sledeći način:
int main () { std::cout << " Hello World!"; std::cout << " I'm a C++ program "; }
Za direktive pretprocesoru (one koje počinju sa znakom #) ne važi ovo opšte pravilo jer one nisu izrazi (komande). One predstavljaju linije koje čita i procesira pretprocesor pre nego što kompajliranje počne. Direktive pretprocesoru moraju biti ispisane u zasebnoj liniji, i, pošto nisu izrazi, ne moraju se završiti sa znakom ";".
Komentari
Kao što smo pomenuli ranije, komentari ne utiču na izvršavanje programa. Međutim, komentari pružaju način da unutar koda dokumentujemo/objasnimo šta i kako naš program radi. C++ podržava dva načina komentarisanja koda:
Linija | Editor |
---|---|
1 | // linijski komentar |
2 | /* blok komentara */ |
Linijski komentar odbacuje/zanemaruje sve od iza para znakova za deljenje "//" pa do kraja te linije.
Blok komentar odbacuje/zanemaruje sve između "/" karaktera i prvog pojavljivanja "/" karaktera, sa mogućnošću uključivanja više linija.
Hajde da dodamo komentare našem drugom programu:
/* moj drugi C++ program sa vise komentara */ #include <iostream> int main () { std::cout << " Hello World!"; // ispisuje Hello World! std::cout << "I'm a C++ program"; // ispisuje I'm a C++ program }
Ukoliko komentare uključimo u program bez navedene dve kombinacije karaktera "//" ili "/", "/", kompajler će ih smatrati za C++ izraze što će vrlo verovatno uzrokovati da kompajliranje bude neuspešno sa jednom ili više poruka o grešci.